Описание проекта

Необходимо провести исследование клиентов банка и выделить сегменты, которые склонны уходить из банка.

Описание данных

Предоставлен датафрейм с данными клиентов банка.

Структура данных:

План действий:

1. Загрузка и ознакомление с данными
2. Предобработка данных
3. Исследовательский анализ данных
4. Проверка статистических гипотез
5. Сегментация
6. Вывод
7. Рекомендации

Установка модулей

Импорт библиотек

Загрузка и ознакомление с данными

Загрузка данных

Ознакомление с данными

Названия ряда столбцов не соответствуют стилистике pandas.

в начало

Предобработка данных

Общая информация о датафрейме

Датафрейм содержит 12 столбцов и 10 000 строк.
В некоторых столбцах есть пропуски.
Названия столбцов USERID, EST_SALARY не соответствуют стилистике пандас. Тип данных у 6 столбцов (int64), у 4-х столбцов (float64), у 2-х (object).
Отметим, что у столбца age (и, возможно, столбца score) с целочисленными значениями тип данных float64.

Изменение наименования столбцов

Приведем все названия столбцов к нижнему регистру и добавим змеиный регистр к столбцу с идентификатором клиента.

После внесенных изменений названия столбцов соответствуют стилистике pandas.

Проверка на нетипичные значения, которые не соответствуют описанию данных датафрейма

Проверим наличие отрицательных значений в столбцах с числовыми значениями.

Cоздадим функцию, которая в каждом столбце с числовыми значениями будет находить количество отрицательных значений.

Отрицательные значения отсутствуют.

Посмотрим уникальные значения в столбцах city, gender, credit_card, last_activity, churn.

В столбцах находятся только значения в соответствии с описанием данных датафрейм.

Проверка наличия пропусков

В столбцах balance и age присутствуют пропуски, доля которых соответственно составляет 22.95% и 0.26%.

Построим матрицу пропущенных значений, чтобы посмотреть наличие в пропусках какой-либо закономерности.

Распределение пропущенных значений в датафрейме выглядит случайным:

Построим матрицу корреляции пропущенных значений, которая показывает насколько сильно присутствие или отсутствие значений одного признака влияет на присутствие значений другого.

Корреляция пропусков близка к нулю, т.е. пропуски одного признака не влияют на пропуски другого.

Поскольку исследование проводится на предмет оттока клиентов, посмотрим количество ушедших клиентов в столбцах age и balance которых отсутствуют значения.

Обработаем пропуски следующим образом:

Удалим строки с пропусками в столбце age и сбросим индексы.

Осталось 9974 строк.

Изменение типа данных

Посмотрим тип данных у всех признаков.

Проверим столбец score и age, возможно, значения в столбах являются не вещественными, а целочисленными.

Для этого создадим функцию, которая после проверки дробной части значений столбца, не являющихся пропусками, на выходе будет выдавать являются ли значения вещественными либо целочисленными.

Изменим тип данных в столбцах age и score на целочисленный.

Проверка аномалий и редких значений в столбцах balance, est_salary, age, products

Создадим функцию, которая будет выводить описательную статистику и график ящик с усами.

Посмотрим описательную статистику и построим график ящик с усами для age.

Клиенты в зависимости от возраста, лет:

Посмотрим описательную статистику и построим график ящик с усами для balance.

Клиенты в зависимости от баланса:

Посмотрим описательную статистику по уровню дохода

Клиенты в зависимости от дохода:

Посмотрим описательную статистику и построим график ящик с усами для products.

В банке один клиент без оформленных продуктов, что является аномалией.
Кроме того, у данного клиента отсутствует значение баланса, а также возраст 79, входящий в границу редких значений по возрасту. Удалим данное аномальное значение.

Проверка наличия дубликатов

Проверим наличие явных дубликатов.

Явные дубликаты отсутствуют.

Проверим наличие неявных дубликатов по столбцу user_id.

В столбце user_id встречаются 50 одинкаовых id.

Посмотрим встречаются ли дубликаты по user_id и city.

В датафрейме отсутствуют записи с одинаковыми значениями в столбцах user_id и city.

Посмотрим встречаются ли дубликаты по user_id и churn.

Дубликаты отсутствуют.

Посмотрим встречаются ли дубликаты по user_id и age.

В датафрейме 10 записей с одинаковыми значениями в столбцах user_id и age.
Посмотрим данные записи.

Как видно из среза данных, одинаковые id могут быть как у клиентов мужского пола так и у клиентов женского пола.
Исходя из вышенаписанного, нельзя сделать предположение, что записи с одинаковым id, возрастом и полом являются дубликатами.
Таким образом, наличие совпадения по user_id не является признаком дублирования.

Добавим столбец, который будет отображать статусы клиента

Создадим функцию, которые будут выдавать статус клиента в зависимости от параметра.

Создадим столбы customer_churn, cred_card, activity.

Изменим значения в столбце gender, credit_card и last_activity

Посмотрим внесенные изменения.

Проверим сколько 'потерялось' данных при обработке.

Потеря данных составила менее 0.5%.

Промежуточный вывод

При обработке данных:

Потеря данных при обработке данных составила менее 0.5%.

в начало

Анализ данных

Доли ушедших и оставшихся клиентов по портфелю банка

Определим доли ушедших и оставшихся клиентов по всему портфелю банка.

По всему банку доля оттока - 18.2%, оставшиеся клиенты - 81.8%.

Создание функций

Для непрерывных признаков

Создадим функцию, которая по признаку будет выводить описательную статистику и график ящик с усами для оттока и оставшихся клиентов.
В качестве параметра используется рассматриваемый признак.

Создадим функцию, которая будет выводить гистограмму распределения по ушедшим и лояльным клиентам банка. В качестве параметров используются:

Создадим функцию, которая будет определять долю оттока для интевала [min_value, max_value] по рассматриваемому признаку и сравнивать с показателем оттока по банку.

В качестве параметров используются:

Интервал [min_value, max_value] выбирается исходя из анализа гистограммы распределения ушедших и лояльных клиентов.

Для дискретных и категориальных признаков

Создадим функцию, которая будет:

Анализ оттока клиентов в разрезе баллов кредитного скоринга

Посмотрим описательную статистику и распределение выборки для score.

У ушедших клиентов несущественно выше показатели по баллам кредитного скорринга.
Возможно, это обусловлено существенным различием в размерах выборок (оставшиеся клиены более чем в 4 раза превышают ушедших).

Построим график распределения ушедших и оставшихся клиентов в зависимости от баллов скорринга.

Удельный вес ушедших клиентов с высокими баллами скорринга (от 820 до 939) превышает удельный вес оставшихся клиентов.

Определим долю ушедших клиентов с баллами скорринга в диапазоне от 820 до 939 (включительно) балов и сравним с оттоком клиентов по банку.

Отток клиентов с баллами скорринга от 820 до 939 составляет 23%, что превышает уровень оттока клиентов по банку на 26%.

Анализ оттока клиентов в разрезе города

Определим показатель оттока по городам.

В Ярославле и Ростове показатель оттока клиентов составляет 19% и 18.7%, что превышает показатель оттока по банку на 4.5% и 2.8% соответственно.

Анализ оттока клиентов в разрезе пола

Отток клиентов мужского пола составляет 23.7%, что превышает показатель по банку на 30.2%.

Анализ оттока клиентов в разрезе возраста

Посмотрим описательную статистику и распределение выборки.

Описательная статистика и график ящик с усами не показывают существенного различия в возрасте ушедших и оставшихся клиентов в банке.

Построим график распределения ушедших и оставшихся клиентов в зависимости от возраста.

Выделяются два интервала, для которых характерно - ушедшие клиенты превышает лояльных клиентов:

Определим долю ушедших клиентов на выявленных интервалах и сравним с оттоком клиентов по банку.

Отток клиентов по возрасту:
- от 25 до 35 лет составляет 22%, что превышает показатель по банку на 21%
- от 50 до 60 лет составляет 26%, что превышает показатель по банку на 43%

Анализ оттока клиентов в разрезе баллов собственности

Отток клиентов, у которых в собственности находятся более 2-х единиц имущества, превышает показатель оттока по банку (существенное превышение начинается у клиентов с собственностью более 3 ед. имущества).

Анализ оттока клиентов в разрезе баланса

Посмотрим описательную статистику и распределение выборки.

В балансах ушедших клиентов и лояльных банку наблюдаются различия:

Построим график распределения ушедших и оставшихся клиентов в зависимости от баланса.
На гистограмме отобразим клиентов с балансом до 6 млн., поскольку клиенты с большим балансом в банке встречаются редко.

Клиенты с большим балансом (от 750 тыс.) склонны к оттоку.

Определим долю ушедших клиентов на выявленных интервалах и сравним с оттоком клиентов по банку.

Отток клиентов с балансом свыше 750тыс. составляет 35%, что превышает показатель по банку на 92%.

Анализ оттока клиентов в разрезе оформленных продуктов

Отток клиентов, у которых оформлено более 2-х продуктов варьируется от 7% до 63% и превышает показатель оттока по банку в зависимости от количества оформленных продуктов на 5-247%%(существенное превышение начинается если в собственности более 3-х продуктов).

Анализ оттока клиентов в разрезе кредитных карт

Отток клиентов без кредитных карт составляет 25.6%, что превышает банковский показатель на 40.4%.

Анализ оттока клиентов в разрезе активности

Отток 'активных' клиентов составляет 24.5%, что превышает банковский показатель на 34.5%.

Анализ оттока клиентов в разрезе доходов

Посмотрим описательную статистику и распределение выборки.

Существенных различий по доходам у ушедших и лояльных клиентов не наблюдается.

Среднее значение дохода у ушедших - 148.3тыс., у оставшихся - 147.6 тыс.
Медиана дохода у ушедших - 125.4тыс., у оставшихся - 118.2 тыс.

Построим график распределения ушедших и оставшихся клиентов в разрезе по доходам.

На гистограмме отобразим клиентов с доходом до 600 тыс., поскольку клиенты с большим доходов в банке встречаются редко.

Клиенты с доходом от 100 тыс. до 220 тыс. более склонны к оттоку.

Определим долю ушедших клиентов на выявленных интервалах и сравним с оттоком клиентов по банку.

Отток клиентов с доходом от 100тыс. до 220тыс. составляет 20%, что превышает показатель по банку на 10%.

Исследование корреляции между признаками

Матрица и график матрицы корреляции по всем признакам дф.

По результатам анализа матрицы корреляций по всему датафрейму выявлена заметная корреляция между баллами кредитного скорринга и баллами собственности, а также между оформленными продуктами и и баллами собственности

В разрезе оттока клиентов умеренная корреляция между баллами собственности

Матрица и график матрицы корреляции по всем признакам дф в разрезе оттока.

По результатам анализа матрицы корреляций для ушедших клиентов выявлена высокая корреляция для баланса и дохода

Портрет клиента в разрезе оттока

Сгруппируем данные в разрезе отток/не отток по дискретным и категориальным признакам и определим моду.

Создадаим сводную таблицу в разрезе отток/ не отток по непрерывным признакам, определим среднее и рассчитаем относительную разницу.

Для признаков, у которых много редких значений посчитаем медиану, чтобы посмотреть ассиметрию распределений.

Средние значения balance и est_salary больше, чем медиана, значит распределение ассимитрично вправо.

Объединим полученные таблицы.

Для клиентов, покинувших банк характерно:

в начало

Проверка статистических гипотез

  1. Между ушедшими и оставшимися клиентами существует различие в доходах
  2. Средний баланс у ушедших клиентов женского пола выше, чем у лояльных клиентов мужского
  3. Средний балл скорринга у ушедших клиентов женского пола младше 35 лет (включительно) выше, чем у лояльных клиентов мужского пола возрастом старше 35 лет

Между ушедшими и оставшимися клиентами существует различие в доходах

Сформулируем нулевую и альтернативную гипотезу:

Посмотрим размер выборок ушедших и лояльных клиентов.

Создадим функию сравнивающую дисперсию выборок ratio_var(selection1, selection2, n).
В качестве параметров передаются сравниваемые выборки gen_pop1 и gen_pop2, n - вещественное число, с которым будет сравнение отшения дисперсий выборок - отклонение, при котором выборки будут считаться равными.

Проверим равенство дисперсий выборок.

Дисперсии выборок различаются.

Чтобы проверить гипотезу о равенстве среднего 2-х совокупностей применим метод scipy.stats.ttest_ind(), поскольку условия для проведения ttesta выполняются:

В качестве параметра equal_var передадим False, поскольку дисперсия и размеры выборок различаются.
Уровень значимости зададим равным 5%.

Полученное p-значение больше уровня значимости, следовательно нет оснований отвергнуть нулевую гипотезу, т.е. значимого расхождения между средними доходами ушедших и лояльных клиентов не выявлено.

Таким образом, средние доходы ушедших и лояльных клиентов могут быть одинаковыми, либо не достаточно данных для доказательств того, что средние доходы различаются.

Результаты проведенного t-теста показывают не обоснованность утверждения, сформулированного в гипотезе о различии в доходах.

Средний баланс у ушедших клиентов женского пола выше, чем у лояльных клиентов мужского пола

Сформулируем нулевую и альтернативную гипотезу:

Посмотрим размер выборок ушедших клиентов и мужского пола и лояльных клиентов женского пола.

Проверим равенство дисперсий выборок.

Дисперсии выборок различаются.

Чтобы проверить гипотезу о равенстве среднего 2-х совокупностей применим метод scipy.stats.ttest_ind(), поскольку условия для проведения ttesta выполняются:

В качестве параметра equal_var передадим False, поскольку дисперсия и размеры выборок различаются.
Уровень значимости зададим равным 5%.

Полученное p-значение гораздо меньше уровня значимости, следовательно отвергаем нулевую гипотезу о равенстве средних двух генеральных совокупностей в пользу альтернативной гипотезы.

Таким образом, у ушедших клиентов женского пола средний баланс выше, чем у лояльных клиентов мужского.

Таким образом, результаты проведенного t-теста показывают на обоснованность утверждения, сформулированного в гипотезе о различии в балансах.

Средний балл скорринга у ушедших клиентов женского пола младше 35 лет (включительно) выше, чем у лояльных клиентов мужского пола возрастом старше 35 лет

Сформулируем нулевую и альтернативную гипотезу:

Посмотрим размер выборок.

Проверим равенство дисперсий выборок.

Чтобы проверить гипотезу о равенстве среднего 2-х совокупностей применим метод scipy.stats.ttest_ind(), поскольку условия для проведения ttesta выполняются:

В качестве параметра equal_var передадим False, поскольку дисперсия и размеры выборок различаются.
Уровень значимости зададим равным 5%.

Полученное p-значение гораздо меньше уровня значимости, следовательно отвергаем нулевую гипотезу о равенстве средних двух генеральных совокупностей в пользу альтернативной гипотезы.

Это означает, что средний балл у ушедших клиентов женского пола до 35 лет (включительно) выше чем у лояльных клиентов мужского пола старше 35 лет.

Таким образом, результаты проведенного t-теста показывают на обоснованность утверждения, сформулированного в гипотезе о различии в баллах скоринга.

в начало

Промежуточный вывод

Коэффициент оттока клиентов по всему банку составляет 18.2%.

Отток клиентов в разрезе по признакам:

По результатам анализа матрицы корреляций по всему датафрейму выявлена заметная корреляция между баллами кредитного скорринга и баллами собственности, а также между оформленными продуктами и и баллами собственности. В разрезе оттока клиентов умеренная корреляция между баллами собственности.

По результатам анализа матрицы корреляций для ушедших клиентов выявлена высокая корреляция для баланса и дохода.

Портрет клиента, наиболее склонного к оттоку:

Проверены гипотезы:

в начало

Сегментация

Проведем сегментацию признаков по интервалам значений признака, наиболее склонных к оттоку.

Создадим функцию сегментации признака по интервалу def seсtor(atribute, interval, min_value, max_value).
Функции передаются параметры: признак, интервал признака (строчное выражение), минимальное значение интервала, максимальное значение интервала).
Результатом будет дф из одной строки со значениями (наименование признака, интревал признака, размер сегмента, размер сегмента оттока, коэффициент оттока, отношение коэффициента оттока к показателю по банку).

Создадим дф с сегментами по каждому признаку.

Определим 3 сегмента с более точными характеристиками, у которых размер более 500 и показатель оттока превышает банковский.

Сегмент 1. Клиенты, баланс которых свыше 750000.

Сегмент 2. Клиенты, доход которых от 100тыс. до 220тыс. и баллы кредитного скорринга выше 820.

Сегмент 3. Клиенты возрастом от 25 до 35 и статус активный

Приоритезация сегментов

Проранжируем сегменты по степени приоритезации в зависимости от показателя оттока.

  1. Клиенты, баланс которых свыше 750000.
  2. Клиенты возрастом от 25 до 35 и статус активный
  3. Клиенты, доход которых от 100тыс. до 220тыс. и баллы кредитного скорринга выше 820.

в начало

Вывод

По результатам исследования был составлен портрет клиентa в разрезе оттока:

Были выявлены сегменты клиентов с коэффициентом оттока превышающим показатель оттока по банку:

Проверка гипотез показала:

Рекомендации

Для клиентов, баланс которых свыше 750тыс.:

Для клиентов возрастом от 25 до 35 и статус активный

Для клиентов, доход которых от 100тыс. до 220тыс. и баллы кредитного скорринга выше 820:

в начало